import axios from 'axios'
import store from '../store/index'

console.log(store);
import {
  Notification,
  //MessageBox,
  Message
} from 'element-ui'
// import store from '@/store'
// import { getToken } from '@/utils/auth'
// import errorCode from '@/utils/errorCode'



axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
// post请求头
//axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';

// 创建axios实例
const request = axios.create({
  // axios中请求配置有baseURL选项，表示请求URL公共部分
  baseURL: process.env.VUE_APP_BASE_API,
  // 超时
  timeout: 600000
})
// request拦截器
request.interceptors.request.use(config => {
  // console.log(config);
  // 是否需要设置 token
  // const isToken = (config.headers || {}).isToken === false
  // if (getToken() && !isToken) {
  //   config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
  // }
  return config
}, error => {
  console.log(error)
  Promise.reject(error)
})

// 响应拦截器
request.interceptors.response.use(res => {
  // 未设置状态码则默认成功状态
  const code = res.data.code || 200;
  // 获取错误信息
  // const message = errorCode[code] || res.data.msg || errorCode['default']
  const message = res.data.msg || 'error'
  // if (code === 401) {
  //   MessageBox.confirm(
  //     '登录状态已过期，您可以继续留在该页面，或者重新登录',
  //     '系统提示',
  //     {
  //       confirmButtonText: '重新登录',
  //       cancelButtonText: '取消',
  //       type: 'warning'
  //     }
  //   ).then(() => {
  //     store.dispatch('LogOut').then(() => {
  //       // location.reload() // 为了重新实例化vue-router对象 避免bug
  //       location.href = process.env.NODE_ENV === 'production' ? '/dist/index.html' : '/';
  //     })
  //   })
  // } else
  if (code === 500) {
    Message({
      message: message,
      type: 'error'
    })
    return Promise.reject(new Error(message))
  } else if(code == 403){
    // token过期 重新登陆
    store.dispatch('loginAction', false)
  } else if (code !== 200) {
    Notification.error({
      title: message
    })
    return Promise.reject('error')
  } else {
    return res.data
  }
},
  error => {
    console.log('err' + error)
    Message({
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

export default request
